home *** CD-ROM | disk | FTP | other *** search
/ Especial Multimedia / Especial Multimedia.iso / Multimed / Dibujo / RENDC102.ZIP / RI.H_ / RI
Text File  |  1996-05-12  |  15KB  |  400 lines

  1. /*
  2.  * ri.h - header file for RenderMan Interface
  3.  *
  4.  * The RenderMan (R) Interface Procedures and RIB Protocol are:
  5.  *      Copyright 1988, 1989, Pixar.  All rights reserved.
  6.  * RenderMan (R) is a registered trademark of Pixar.
  7.  */
  8.  
  9. #ifndef RI_H
  10. #define RI_H
  11.  
  12. #ifdef __cplusplus
  13. extern "C" {
  14. #endif
  15.  
  16. /*
  17.  * Definitions of Abstract Types used in RenderMan Interface.
  18.  */
  19. typedef short           RtBoolean;
  20. typedef long            RtInt;
  21. typedef float           RtFloat;
  22.  
  23. typedef char         *RtToken;
  24.  
  25. typedef RtFloat         RtColor[3];
  26. typedef RtFloat         RtPoint[3];
  27. typedef RtFloat         RtMatrix[4][4];
  28. typedef RtFloat         RtBasis[4][4];
  29. typedef RtFloat         RtBound[6];
  30. typedef char         *RtString;
  31.  
  32. typedef void          *RtPointer;
  33. typedef void            RtVoid;
  34. #ifdef __cplusplus
  35. typedef RtVoid         (*RtFunc)(...);
  36. typedef RtFloat           (*RtFloatFunc)(...);
  37. #else
  38. typedef RtVoid         (*RtFunc)();
  39. typedef RtFloat           (*RtFloatFunc)();
  40. #endif
  41.  
  42. typedef RtPointer       RtObjectHandle;
  43. typedef RtPointer       RtLightHandle;
  44.  
  45.  
  46. /*
  47.  * Extern Declarations for Predefined RI Data Structures
  48.  */
  49. #define RI_FALSE    0
  50. #define RI_TRUE        (!RI_FALSE)
  51. #define RI_INFINITY    1.0e38
  52. #define RI_EPSILON    1.0e-10
  53. #define RI_NULL        ((RtToken)0)
  54.  
  55. extern RtToken    RI_FRAMEBUFFER, RI_FILE;
  56. extern RtToken    RI_RGB, RI_RGBA, RI_RGBZ, RI_RGBAZ, RI_A, RI_Z, RI_AZ;
  57. extern RtToken    RI_PERSPECTIVE, RI_ORTHOGRAPHIC;
  58. extern RtToken    RI_HIDDEN, RI_JITTER, RI_PAINT;
  59. extern RtToken    RI_CONSTANT, RI_SMOOTH;
  60. extern RtToken    RI_FLATNESS, RI_FOV;
  61.  
  62. extern RtToken    RI_AMBIENTLIGHT, RI_POINTLIGHT,
  63.         RI_DISTANTLIGHT, RI_SPOTLIGHT;
  64. extern RtToken    RI_INTENSITY, RI_LIGHTCOLOR, RI_FROM, RI_TO,
  65.         RI_CONEANGLE, RI_CONEDELTAANGLE, RI_BEAMDISTRIBUTION;
  66. extern RtToken    RI_MATTE, RI_METAL, RI_SHINYMETAL,
  67.         RI_PLASTIC, RI_PAINTEDPLASTIC;
  68. extern RtToken    RI_KA, RI_KD, RI_KS, RI_ROUGHNESS, RI_KR,
  69.         RI_TEXTURENAME, RI_SPECULARCOLOR;
  70. extern RtToken    RI_DEPTHCUE, RI_FOG, RI_BUMPY;
  71. extern RtToken    RI_MINDISTANCE, RI_MAXDISTANCE, RI_BACKGROUND,
  72.         RI_DISTANCE, RI_AMPLITUDE;
  73.  
  74. extern RtToken    RI_RASTER, RI_SCREEN, RI_CAMERA, RI_WORLD, RI_OBJECT;
  75. extern RtToken    RI_INSIDE, RI_OUTSIDE, RI_LH, RI_RH;
  76. extern RtToken    RI_P, RI_PZ, RI_PW, RI_N, RI_NP,
  77.         RI_CS, RI_OS, RI_S, RI_T, RI_ST;
  78. extern RtToken    RI_BILINEAR, RI_BICUBIC;
  79. extern RtToken    RI_PRIMITIVE, RI_INTERSECTION, RI_UNION, RI_DIFFERENCE;
  80. extern RtToken    RI_PERIODIC, RI_NONPERIODIC, RI_CLAMP, RI_BLACK;
  81. extern RtToken    RI_IGNORE, RI_PRINT, RI_ABORT, RI_HANDLER;
  82.  
  83. extern RtToken    RI_ORIGIN;
  84. extern RtToken    RI_COMMENT, RI_STRUCTURE;
  85.  
  86. /*
  87.  * Implementation specific
  88.  */
  89. extern RtToken    RI_LIMITS, RI_GRIDSIZE, RI_BUCKETSIZE;
  90. extern RtToken    RI_IDENTIFIER, RI_NAME, RI_SHADINGGROUP;
  91.  
  92. extern RtBasis    RiBezierBasis, RiBSplineBasis, RiCatmullRomBasis,
  93.         RiHermiteBasis, RiPowerBasis;
  94.  
  95. #define RI_BEZIERSTEP        ((RtInt)3)
  96. #define RI_BSPLINESTEP        ((RtInt)1)
  97. #define RI_CATMULLROMSTEP    ((RtInt)1)
  98. #define RI_HERMITESTEP        ((RtInt)2)
  99. #define RI_POWERSTEP        ((RtInt)4)
  100.  
  101. extern RtInt    RiLastError;
  102.  
  103. /*
  104.  * Declarations of All the RenderMan Interface Subroutines
  105.  */
  106. extern RtFloat    RiGaussianFilter(RtFloat x, RtFloat y,
  107.                 RtFloat xwidth, RtFloat ywidth);
  108. extern RtFloat    RiBoxFilter(RtFloat x, RtFloat y,
  109.                 RtFloat xwidth, RtFloat ywidth);
  110. extern RtFloat    RiTriangleFilter(RtFloat x, RtFloat y,
  111.                 RtFloat xwidth, RtFloat ywidth);
  112. extern RtFloat    RiCatmullRomFilter(RtFloat x, RtFloat y,
  113.                 RtFloat xwidth, RtFloat ywidth);
  114. extern RtFloat    RiSincFilter(RtFloat x, RtFloat y,
  115.                 RtFloat xwidth, RtFloat ywidth);
  116. extern RtVoid    RiErrorIgnore(RtInt code, RtInt severity, char *msg);
  117. extern RtVoid    RiErrorPrint(RtInt code, RtInt severity, char *msg);
  118. extern RtVoid    RiErrorAbort(RtInt code, RtInt severity, char *msg);
  119.  
  120. extern RtToken
  121.     RiDeclare(char *name, char *declaration);
  122.  
  123. extern RtVoid
  124.     RiBegin(RtToken name),
  125.     RiEnd(void),
  126.     RiFrameBegin(RtInt frame),
  127.     RiFrameEnd(void),
  128.     RiWorldBegin(void),
  129.     RiWorldEnd(void);
  130.  
  131. extern RtVoid
  132.     RiFormat(RtInt xres, RtInt yres, RtFloat aspect),
  133.     RiFrameAspectRatio(RtFloat aspect),
  134.     RiScreenWindow(RtFloat left, RtFloat right, RtFloat bot, RtFloat top),
  135.     RiCropWindow(RtFloat xmin, RtFloat xmax, RtFloat ymin, RtFloat ymax),
  136.     RiProjection(RtToken name, ...),
  137.     RiProjectionV(RtToken name, RtInt n, RtToken tokens[],
  138.         RtPointer parms[]),
  139.     RiClipping(RtFloat hither, RtFloat yon),
  140.     RiDepthOfField(RtFloat fstop, RtFloat focallength,
  141.         RtFloat focaldistance),
  142.     RiShutter(RtFloat min, RtFloat max);
  143.  
  144. extern RtVoid
  145.     RiPixelVariance(RtFloat variation),
  146.     RiPixelSamples(RtFloat xsamples, RtFloat ysamples),
  147.     RiPixelFilter(RtFloatFunc filterfunc, RtFloat xwidth, RtFloat ywidth),
  148.     RiExposure(RtFloat gain, RtFloat gamma),
  149.     RiImager(RtToken name, ...),
  150.     RiImagerV(RtToken name, RtInt n, RtToken tokens[], RtPointer parms[]),
  151.     RiQuantize(RtToken type, RtInt one, RtInt min, RtInt max, RtFloat ampl),
  152.     RiDisplay(char *name, RtToken type, RtToken mode, ...),
  153.     RiDisplayV(char *name, RtToken type, RtToken mode,
  154.         RtInt n, RtToken tokens[], RtPointer parms[]);
  155.  
  156. extern RtVoid
  157.     RiHider(RtToken type, ...),
  158.     RiHiderV(RtToken type, RtInt n, RtToken tokens[], RtPointer parms[]),
  159.     RiColorSamples(RtInt n, RtFloat nRGB[], RtFloat RGBn[]),
  160.     RiRelativeDetail(RtFloat relativedetail),
  161.     RiOption(RtToken name, ...),
  162.     RiOptionV(RtToken name, RtInt n, RtToken tokens[], RtPointer parms[]);
  163.  
  164. extern RtVoid
  165.     RiAttributeBegin(void),
  166.     RiAttributeEnd(void),
  167.     RiColor(RtColor color),
  168.     RiOpacity(RtColor color),
  169.     RiTextureCoordinates(RtFloat s1, RtFloat t1, RtFloat s2, RtFloat t2,
  170.         RtFloat s3, RtFloat t3, RtFloat s4, RtFloat t4);
  171.  
  172. extern RtLightHandle
  173.     RiLightSource(RtToken name, ...),
  174.     RiLightSourceV(RtToken name, RtInt n, RtToken tokens[],
  175.         RtPointer parms[]),
  176.     RiAreaLightSource(RtToken name, ...),
  177.     RiAreaLightSourceV(RtToken name, RtInt n, RtToken tokens[],
  178.         RtPointer parms[]);
  179.  
  180. extern RtVoid
  181.     RiIlluminate(RtLightHandle light, RtBoolean ononff),
  182.     RiSurface(RtToken name, ...),
  183.     RiSurfaceV(RtToken name, RtInt n, RtToken tokens[], RtPointer parms[]),
  184.     RiAtmosphere(RtToken name, ...),
  185.     RiAtmosphereV(RtToken name, RtInt n, RtToken tokens[],
  186.         RtPointer parms[]),
  187.     RiInterior(RtToken name, ...),
  188.     RiInteriorV(RtToken name, RtInt n, RtToken tokens[], RtPointer parms[]),
  189.     RiExterior(RtToken name, ...),
  190.     RiExteriorV(RtToken name, RtInt n, RtToken tokens[], RtPointer parms[]),
  191.     RiShadingRate(RtFloat size),
  192.     RiShadingInterpolation(RtToken type),
  193.     RiMatte(RtBoolean onoff);
  194.  
  195. extern RtVoid
  196.     RiBound(RtBound bound),
  197.     RiDetail(RtBound bound),
  198.     RiDetailRange(RtFloat minvis, RtFloat lowtran, RtFloat uptran,
  199.         RtFloat maxvis),
  200.     RiGeometricApproximation(RtToken type, RtFloat value),
  201.     RiOrientation(RtToken orientation),
  202.     RiReverseOrientation(void),
  203.     RiSides(RtInt sides);
  204.  
  205. extern RtVoid
  206.     RiIdentity(void),
  207.     RiTransform(RtMatrix transform),
  208.     RiConcatTransform(RtMatrix transform),
  209.     RiPerspective(RtFloat fov),
  210.     RiTranslate(RtFloat dx, RtFloat dy, RtFloat dz),
  211.     RiRotate(RtFloat angle, RtFloat dx, RtFloat dy, RtFloat dz),
  212.     RiScale(RtFloat sx, RtFloat sy, RtFloat sz),
  213.     RiSkew(RtFloat angle, RtFloat dx1, RtFloat dy1, RtFloat dz1,
  214.         RtFloat dx2, RtFloat dy2, RtFloat dz2),
  215.     RiDeformation(RtToken name, ...),
  216.     RiDeformationV(RtToken name, RtInt n, RtToken tokens[],
  217.         RtPointer parms[]),
  218.     RiDisplacement(RtToken name, ...),
  219.     RiDisplacementV(RtToken name, RtInt n, RtToken tokens[],
  220.         RtPointer parms[]),
  221.     RiCoordinateSystem(RtToken space);
  222.  
  223. extern RtPoint *
  224.     RiTransformPoints(RtToken fromspace, RtToken tospace, RtInt n,
  225.         RtPoint points[]);
  226.  
  227. extern RtVoid
  228.     RiTransformBegin(void),
  229.     RiTransformEnd(void);
  230.  
  231. extern RtVoid
  232.     RiAttribute(RtToken name, ...),
  233.     RiAttributeV(RtToken name, RtInt n, RtToken tokens[],
  234.         RtPointer parms[]);
  235.  
  236. extern RtVoid
  237.     RiPolygon(RtInt nverts, ...),
  238.     RiPolygonV(RtInt nverts, RtInt n, RtToken tokens[], RtPointer parms[]),
  239.     RiGeneralPolygon(RtInt nloops, RtInt nverts[], ...),
  240.     RiGeneralPolygonV(RtInt nloops, RtInt nverts[], RtInt n,
  241.         RtToken tokens[], RtPointer parms[]),
  242.     RiPointsPolygons(RtInt npolys, RtInt nverts[], RtInt verts[], ...),
  243.     RiPointsPolygonsV(RtInt npolys, RtInt nverts[], RtInt verts[], RtInt n,
  244.         RtToken tokens[], RtPointer parms[]),
  245.     RiPointsGeneralPolygons(RtInt npolys, RtInt nloops[], RtInt nverts[],
  246.         RtInt verts[], ...),
  247.     RiPointsGeneralPolygonsV(RtInt npolys, RtInt nloops[], RtInt nverts[],
  248.         RtInt verts[], RtInt n, RtToken tokens[], RtPointer parms[]),
  249.     RiBasis(RtBasis ubasis, RtInt ustep, RtBasis vbasis, RtInt vstep),
  250.     RiPatch(RtToken type, ...),
  251.     RiPatchV(RtToken type, RtInt n, RtToken tokens[], RtPointer parms[]),
  252.     RiPatchMesh(RtToken type, RtInt nu, RtToken uwrap, RtInt nv,
  253.         RtToken vwrap, ...),
  254.     RiPatchMeshV(RtToken type, RtInt nu, RtToken uwrap, RtInt nv,
  255.         RtToken vwrap, RtInt n, RtToken tokens[], RtPointer parms[]),
  256.     RiNuPatch(RtInt nu, RtInt uorder, RtFloat uknot[], RtFloat umin,
  257.         RtFloat umax, RtInt nv, RtInt vorder, RtFloat vknot[],
  258.         RtFloat vmin, RtFloat vmax, ...),
  259.     RiNuPatchV(RtInt nu, RtInt uorder, RtFloat uknot[], RtFloat umin,
  260.         RtFloat umax, RtInt nv, RtInt vorder, RtFloat vknot[],
  261.         RtFloat vmin, RtFloat vmax, RtInt n, RtToken tokens[],
  262.         RtPointer parms[]),
  263.     RiTrimCurve(RtInt nloops, RtInt ncurves[], RtInt order[],
  264.         RtFloat knot[], RtFloat min[], RtFloat max[], RtInt n[],
  265.         RtFloat u[], RtFloat v[], RtFloat w[]);
  266.  
  267. extern RtVoid
  268.     RiSphere(RtFloat radius, RtFloat zmin, RtFloat zmax, RtFloat tmax, ...),
  269.     RiSphereV(RtFloat radius, RtFloat zmin, RtFloat zmax, RtFloat tmax,
  270.         RtInt n, RtToken tokens[], RtPointer parms[]),
  271.     RiCone(RtFloat height, RtFloat radius, RtFloat tmax, ...),
  272.     RiConeV(RtFloat height, RtFloat radius, RtFloat tmax, RtInt n,
  273.         RtToken tokens[], RtPointer parms[]),
  274.     RiCylinder(RtFloat radius, RtFloat zmin, RtFloat zmax, RtFloat tmax,
  275.         ...),
  276.     RiCylinderV(RtFloat radius, RtFloat zmin, RtFloat zmax, RtFloat tmax,
  277.         RtInt n, RtToken tokens[], RtPointer parms[]),
  278.     RiHyperboloid(RtPoint point1, RtPoint point2, RtFloat tmax, ...),
  279.     RiHyperboloidV(RtPoint point1, RtPoint point2, RtFloat tmax, RtInt n,
  280.         RtToken tokens[], RtPointer parms[]),
  281.     RiParaboloid(RtFloat rmax, RtFloat zmin, RtFloat zmax, RtFloat tmax,
  282.         ...),
  283.     RiParaboloidV(RtFloat rmax, RtFloat zmin, RtFloat zmax, RtFloat tmax,
  284.         RtInt n, RtToken tokens[], RtPointer parms[]),
  285.     RiDisk(RtFloat height, RtFloat radius, RtFloat tmax, ...),
  286.     RiDiskV(RtFloat height, RtFloat radius, RtFloat tmax, RtInt n,
  287.         RtToken tokens[], RtPointer parms[]),
  288.     RiTorus(RtFloat majrad, RtFloat minrad, RtFloat phimin, RtFloat phimax,
  289.         RtFloat tmax, ...),
  290.     RiTorusV(RtFloat majrad, RtFloat minrad, RtFloat phimin, RtFloat phimax,
  291.         RtFloat tmax, RtInt n, RtToken tokens[], RtPointer parms[]),
  292.     RiProcedural(RtPointer data, RtBound bound, RtFunc subdivfunc,
  293.         RtFunc freefunc),
  294.     RiGeometry(RtToken type, ...),
  295.     RiGeometryV(RtToken type, RtInt n, RtToken tokens[], RtPointer parms[]);
  296.  
  297. extern RtVoid
  298.     RiSolidBegin(RtToken operation),
  299.     RiSolidEnd(void);
  300.  
  301. extern RtObjectHandle
  302.     RiObjectBegin(void);
  303.  
  304. extern RtVoid
  305.     RiObjectEnd(void),
  306.     RiObjectInstance(RtObjectHandle handle),
  307.     RiMotionBegin(RtInt n, ...),
  308.     RiMotionBeginV(RtInt n, RtFloat times[]),
  309.     RiMotionEnd(void);
  310.  
  311. extern RtVoid
  312.     RiMakeTexture(char *pic, char *tex, RtToken swrap, RtToken twrap,
  313.         RtFloatFunc filterfunc, RtFloat swidth, RtFloat twidth, ...),
  314.     RiMakeTextureV(char *pic, char *tex, RtToken swrap, RtToken twrap,
  315.         RtFloatFunc filterfunc, RtFloat swidth, RtFloat twidth, RtInt n,
  316.         RtToken tokens[], RtPointer parms[]),
  317.     RiMakeBump(char *pic, char *tex, RtToken swrap, RtToken twrap,
  318.         RtFloatFunc filterfunc, RtFloat swidth, RtFloat twidth, ...),
  319.     RiMakeBumpV(char *pic, char *tex, RtToken swrap, RtToken twrap,
  320.         RtFloatFunc filterfunc, RtFloat swidth, RtFloat twidth, RtInt n,
  321.         RtToken tokens[], RtPointer parms[]),
  322.     RiMakeLatLongEnvironment(char *pic, char *tex, RtFloatFunc filterfunc,
  323.         RtFloat swidth, RtFloat twidth, ...),
  324.     RiMakeLatLongEnvironmentV(char *pic, char *tex, RtFloatFunc filterfunc,
  325.         RtFloat swidth, RtFloat twidth, RtInt n, RtToken tokens[],
  326.         RtPointer parms[]),
  327.     RiMakeCubeFaceEnvironment(char *px, char *nx, char *py, char *ny,
  328.         char *pz, char *nz, char *tex, RtFloat fov,
  329.         RtFloatFunc filterfunc, RtFloat swidth, RtFloat twidth, ...),
  330.     RiMakeCubeFaceEnvironmentV(char *px, char *nx, char *py, char *ny,
  331.         char *pz, char *nz, char *tex, RtFloat fov,
  332.         RtFloatFunc filterfunc, RtFloat swidth, RtFloat twidth, RtInt n,
  333.         RtToken tokens[], RtPointer parms[]),
  334.     RiMakeShadow(char *pic, char *tex, ...),
  335.     RiMakeShadowV(char *pic, char *tex, RtInt n, RtToken tokens[],
  336.         RtPointer parms[]);
  337.  
  338. extern RtVoid
  339.     RiErrorHandler(RtFunc handler);
  340.  
  341. extern RtVoid
  342.     RiArchiveRecord(RtToken type, char *fmt, ...);
  343.  
  344. #ifdef __cplusplus
  345. }
  346. #endif
  347.  
  348.  
  349. /*
  350.  *    Error Codes
  351.  *
  352.  *     1 - 10        System and File Errors
  353.  *    11 - 20        Program Limitations
  354.  *    21 - 40        State Errors
  355.  *    41 - 60        Paramter and Protocol Errors
  356.  *    61 - 80        Execution Errors
  357.  */
  358. #define RIE_NOERROR        ((RtInt)0)
  359.  
  360. #define RIE_NOMEM        ((RtInt)1)    /* Out of memory */
  361. #define RIE_SYSTEM        ((RtInt)2)    /* Miscellaneous system error */
  362. #define RIE_NOFILE        ((RtInt)3)    /* File nonexistent */
  363. #define RIE_BADFILE        ((RtInt)4)    /* Bad file format */
  364. #define RIE_VERSION        ((RtInt)5)    /* File version mismatch */
  365.  
  366. #define RIE_INCAPABLE        ((RtInt)11)    /* Optional RI feature */
  367. #define RIE_UNIMPLEMENT        ((RtInt)12)    /* Unimplemented feature */
  368. #define RIE_LIMIT        ((RtInt)13)    /* Arbitrary program limit */
  369. #define RIE_BUG            ((RtInt)14)    /* Probably a bug in renderer */
  370.  
  371. #define RIE_NOTSTARTED        ((RtInt)23)    /* RiBegin not called */
  372. #define RIE_NESTING        ((RtInt)24)    /* Bad begin-end nesting */
  373. #define RIE_NOTOPTIONS        ((RtInt)25)    /* Invalid state for options */
  374. #define RIE_NOTATTRIBS        ((RtInt)26)    /* Invalid state for attribs */
  375. #define RIE_NOTPRIMS        ((RtInt)27)    /* Invalid state for primitives */
  376. #define RIE_ILLSTATE        ((RtInt)28)    /* Other invalid state */
  377. #define RIE_BADMOTION        ((RtInt)29)    /* Badly formed motion block */
  378. #define RIE_BADSOLID        ((RtInt)30)    /* Badly formed solid block */
  379.  
  380. #define RIE_BADTOKEN        ((RtInt)41)    /* Invalid quark for request */
  381. #define RIE_RANGE        ((RtInt)42)    /* Parameter out of range */
  382. #define RIE_CONSISTENCY        ((RtInt)43)    /* Parameters inconsistent */
  383. #define RIE_BADHANDLE        ((RtInt)44)    /* Bad object/light handle */
  384. #define RIE_NOSHADER        ((RtInt)45)    /* Can't load requested shader */
  385. #define RIE_MISSINGDATA        ((RtInt)46)    /* Required parameters not provided */
  386. #define RIE_SYNTAX        ((RtInt)47)    /* Declare type syntax error */
  387.  
  388. #define RIE_MATH        ((RtInt)61)    /* Zerodivide, noninvert matrix, etc. */
  389.  
  390.  
  391. /*
  392.  * Error severity levels
  393.  */
  394. #define RIE_INFO        ((RtInt)0)    /* Rendering stats and other info */
  395. #define RIE_WARNING        ((RtInt)1)    /* Something seems wrong, maybe okay */
  396. #define RIE_ERROR        ((RtInt)2)    /* Problem.  Results may be wrong */
  397. #define RIE_SEVERE        ((RtInt)3)    /* So bad you should probably abort */
  398.  
  399. #endif
  400.